// app/middleware/error_handler.js
module.exports = () => {
    return async (ctx, next) => {
        // 在 Egg.js 中，错误处理中间件会优先捕获所有的错误，
        // 因此在错误处理中间件中捕获到的错误不会再被 try...catch 语句块捕获。
        try {
            await next();
        } catch (err) {
            const { message } = err;
            const code = err.status || 500;
            ctx.status = code;
            ctx.body = {
                code,
                message: message || 'Internal Server Error',
                errors: err.errors,
            };
        }
    };
};
